package com.study.java._02anno_reflec.type.gsontest;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

/**
 * <pre>
 *     author : slx
 *     time   : 2020/11/28
 *     desc   :
 * </pre>
 */
// 自定义TypeToken获取泛型真实类型
public class TypeRefrence<T> {
    Type type;

    public TypeRefrence() {
        Type genericSuperclass = getClass().getGenericSuperclass();
        ParameterizedType parameterizedType = (ParameterizedType) genericSuperclass;
        // 可能是多个泛型所以返回数组，<T,X,Z>
        Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
        type = actualTypeArguments[0];
    }

    public Type getType() {
        return type;
    }
}